/*
 * @Descripttion: 
 * @version: 
 * @Author: wtzhang
 * @Date: 2021-05-26 09:25:56
 * @LastEditors: wtzhang
 * @LastEditTime: 2021-05-26 14:00:34
 */

const fs = require('fs')

// console.log(1);
// // 创建一个promise容器
// // promise 一旦开始创建， 就开始执行里面的代码
// // promise 是一个构造函数
// new Promise(function () {
//   console.log(2);
//   fs.readFile('./data/c.txt', 'utf8', function (err, data) {
//     if (err) {
//       throw err
//     }
//     console.log(3);
//     console.log(data);
//   })
// })

// console.log(4);

let p1 = new Promise(function (resolve, reject) {
  fs.readFile('./data/c.txt', 'utf8', function (err, data) {
    if (err) {
      // 失败了，承诺容器中的人物失败了
      // 把容器中的 pending 状态变为rejected
    // 也就是这里调用的 reject 方法实际上就是 then 方法传递的 第二个 function
      reject(err)
    }
    // 成功了，承诺容器中的人物失败了
    // 把容器中的 pending 状态变为 resolved
    // 也就是这里调用的 resolve 方法实际上就是 then 方法传递的 function
    resolve(data)
  });
})

let p2 =  new Promise(function (resolve, reject) {
  fs.readFile('./data/b.txt', 'utf8', function (err, data) {
    if (err) {
      // 失败了，承诺容器中的人物失败了
      // 把容器中的 pending 状态变为rejected
    // 也就是这里调用的 reject 方法实际上就是 then 方法传递的 第二个 function
      reject(err)
    }
    // 成功了，承诺容器中的人物失败了
    // 把容器中的 pending 状态变为 resolved
    // 也就是这里调用的 resolve 方法实际上就是 then 方法传递的 function
    resolve(data)
  });
})

// 当p1成功，然后（then）做指定操作
// then 方法接收的 function 就是容器中的 resolve 函数
p1.then(function (data) {
  console.log(data);
  return p2
}, function (err) {
  console.log('读取文件失败',err);
}).then(function (data) {
  console.log(data);
})

